iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
0

遊戲當中移動是重要的機制,用Bolt要怎麼進行不同移動機制的呢?首先當然是先進行移動到特定點的嘗試。

Bolt的Graph主要分成二個種類,其一是Flow Graph(FG)而另一個則是State Graph。Stage Graph會在之後再做詳細的介紹。而FG,之前稍微提及過。它和寫程式有著將近一比一的關聯性。而在Bolt的世界中,FG就是將變數、函式等用方塊方式表現,並搭配著連線於一個個方塊間,達成它的的推移順序,如同Flow一般,朝著某方向前進,而完成功能。這也是Flow Graph的核心概念。

Unity的生態中,已針對物件中的運作也明確的框架,故撰寫程式時,無需寫下main 函式當做進入點。每個物件上掛載了繼承MonoBehaviour(MB)的型別,而在MB中有對於該物件如何運行做規範。官網文件有詳細的介紹

而用Bolt,也是遵循這個規範。故在用Bolt進行四則運算時,就用物件的Start,也就是一開始時就進行這些行為測試。而Bolt中,就將其Start包成了一個Start事件,讓Graph隨著接收此事件進而展開後面的運作。然Start是只會執行一次的地方,若是對於某些行為需要持續進行,則要放入到會重覆運行到的函式中,通常(在簡易的做法下)會利用Update這個函式。而Bolt也將其包成一個Update事件。也就是接在此事件中後的行為會一直被重覆。

在這次主要根據不同的方式進行移動的嘗試中,想當然地,就必需要利用Update事件才用完成。

不用考慮太多的移動

第一個範例,就是很直接的讓一個方塊從世界原點移動到固定的某一點。用Update事件做為驅動點,重覆進行物件位置的變更,進而達成物件在移動的感覺。且在此範例中放入了四個一樣行為的方塊,利用它們各自的變數而達成目的地不同的移動。

這個畫面是執行時所截圖的,在反覆運行時,Bolt會顯示它的Flow,讓開發者可以了解到它的運行狀態。這也是視覺化工具很重要的一點,不但是組合行為時是視覺化表現,且運行時一樣是視覺化呈現,對於非程式人員來說提供了最即時的反饋。

利用AWSD進行移動

玩家按下AWSD進行移動是目前多數遊戲中要移動角色最廣泛的操作。利用了按下AWSD後Unity轉換成水平、垂直對應的值後,再不停的和目前的位置進行計算,而後再將計算值回存到物件現有的位置,而達成多方向移動。

這張是運行時的畫面,可看到它在移動,但因為沒有標地物所以看不太出來其移動。

但MOBA的移動也是大宗

除了AWSD移動外,另一個也很受歡迎的移動的方式就是滑鼠點擊後移動。這個移動算是這裡面移動最為複雜的。除了移動的判定外,也要搭配場景的設定。

整個流程為將場景進行NavMesh烘焙(Bake)的動作,而後將NavMesh Agent元件置於要移動的物件。這些就是大致的前置作業,而後就是要用Bolt來給予行為。

  • 拿取滑鼠點擊畫面上的位置
  • 將此畫面位置轉成場景中位置
  • 讓NavMesh Agent移動到此場景位置

礙於對Bolt的方塊分類不了解,這段Bolt如何完成也是參考了此教學影片。

一但給予了場景中的目標位置,循路系統就會導引物件移動過去。

一段時間後進行移動

這個Sample裡嘗試了另一種按鍵事件的驅動方式,並搭配了複雜的Timer。欲達到的移動行為是一但按鍵按下去後,物件會隨機從四方向裡選一個方向移動,待一段時間後,會再進行選擇,如此反覆下去。

雖然此按鍵事件如同Start事件是屬於一次性的觸發,但觸發後,利用了Timer進行反覆性的運行,進而達成其功能。

這次不再利用世界坐標裡的位置,而是進行本地坐標的四方向操作,若是物件一開始有旋轉的角度,則它自己四方向的呈現從世界中去詮釋會看起來不太一樣,達成簡易的多變性。

而在這個範行進行中,發現了若是在Graph中產生一個變數,它雖然概念上是區域性變數,只能在此Graph中被看到、使用。但運行後停下來時,此變數的值會被改變而不會被復元,也就是從Bolt的角度去看,它反而像是某種全域性的變數。這點觀察到的現象不知是不是對於Bolt不了解所造成的,要避免它帶來的意外是日後使用上的重點之一。

更多Unity的接合

移動和數個事件的了解到此告一段落,接下來就要進入到UI層面的銜接,觸發器的使用,和一些用Unity開發時少不了的功能實作。

在Unity 2019.3 beta環境中,有注意到每次關閉Editor時會很容易發生沒有回應,關不起來的狀況。不知道是Bolt的問題,Unity Beta版的問題,還是Bolt的圖沒有注意到什麼細節而引起的錯誤。要再觀察看看。

今日測試用的專案放罝在Git Repo中的unity-specific-bolt目錄裡。一樣Bolt外掛沒有置入,以防止侵權。若想深入了解,請自行購入並引用Bolt。


上一篇
簡易使用Bolt
下一篇
於Bolt中實現更多Unity中常出現功能
系列文
探索Unity中的視覺化製作工具30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言